1 简单流程控制语句

本节学习目标

  1. 了解 3种if语句和case的格式
  2. 掌握 双分支if语句和case语句的应用
  3. 掌握 3种循环语句的格式和应用

1.1 单分支if语句

  • 语法格式

    if [ 条件 ]
    then
         指令
    fi
    

场景:单一条件,只有一个输出

  • 单分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]

then
   echo "您的性别是 男"
fi

1.2 双分支if语句

  • 语法格式
if [ 条件 ]
then
     指令1
else
    指令2
fi
  • 场景:一个条件,两种结果
  • 双分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
   echo "您的性别是 男"
else
   echo "您的性别是 女"
fi

1.3 多分支if语句

  • 语法格式
if [ 条件 ]
then
     指令1
elif [ 条件2 ]
then
    指令2
else
    指令3
fi
  • 场景:n个条件,n+1个结果
多分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
   echo "您的性别是 男"
elif [ "$1" == "nv" ]
then
   echo "您的性别是 女"
else
   echo "您的性别,我不知道"
fi
  • 多if语句生产场景: 服务的启动

1.3 要求脚本执行需要有参数,通过传入参数来实现不同的功能

  • 参数和功能详情如下:
参数 执行效果
start 服务器启动中...
stop 服务器关闭中...
restart 服务器重启中...
  • 脚本 X.sh 使用方式 X.sh [ start|stop|restart ]

  • 脚本内容

admin-1@ubuntu:/data/scripts/python-n# cat if.sh
#!/bin/bash
# 多if语句的使用场景
if [ "$1" == "start" ]
then
   echo "服务启动中..."
elif [ "$1" == "stop" ]
then
   echo "服务关闭中..."
elif [ "$1" == "restart" ]
then
   echo "服务重启中..."
else
   echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
fi

1.4 case选择语句

我们发现多if语句使用的时候,代码量很多,而且整体看起来确实有那么一丁点乱,有没有办法更好的实现这种效果呢?就是Case语句。

  • case语句格式
case 变量名 in1)
      指令1
         ;;
   ...
   值n)
     指令n
         ;;
esac

注意:首行关键字是case,末行关键字esac选择项后面都有 )每个选择的执行语句结尾都有两个分号;

case**语句示例**

场景:在多if语句的基础上对脚本进行升级

​ 需求:

要求脚本执行需要有参数,通过传入参数来实现不同的功能。

参数和功能详情如下:

参数 执行效果

​ start 服务启动中...

​ stop 服务关闭中...

​ restart 服务重启中...

​ * 脚本 X.sh 使用方式 X.sh [ start|stop|restart ]

  • 脚本内容:
# cat case.sh
#!/bin/bash
# case语句使用场景
case "$1" in                 
    "start")                 
        echo "服务启动中..."                  
        ;;                  
    "stop")                 
        echo "服务关闭中..."                  
        ;;                          
    "restart")                   
        echo "服务重启中..."             
        ;;                  
    *)                 
        echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"      
        ;;                  
esac

1.5 for循环语句

循环指定的所有元素,循环完毕之后就推出

  • 语法格式
forin 列表
do
   执行语句
done

注意:”for” 循环总是接收 “in” 语句之后的某种类型的字列表,执行次数和list列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出

  • 示例:遍历文件
#!/bin/bash
# for语句的使用示例
for i in $(ls /root)
do
  echo "${i}"
done

1.6 while循环语句

  • 语法格式
while 条件
do
   执行语句
done

注意:条件的类型:命令、[[ 字符串表达式 ]]、(( 数字表达式 )) 注意:continue用来跳过循环,break用于退出循环

  • while语句示例
  • 脚本内容
#!/bin/bash
# while的示例
a=1
while [ "${a}" -lt 5 ]
do
   echo "${a}"
   a=$((a+1))
done
#!/bin/bash
# while的示例
a=1
while true
do
   echo "${a}"
   if $a
   then
     break
   fi
done

1.7 until循环语句

  • 语法格式
until 条件
do
   执行语句
done

注意:条件的类型:命令、[[ 字符串表达式 ]]、(( 数字表达式 ))

  • until语句示例
#!/bin/bash
# until的示例
a=1
until [ "${a}" -eq 5 ]
do
   echo "${a}"
   a=$((a+1))
done